package com.itzhoun.fix;

/**
 * 修复懒加载第二个方法
 * @author 周楠
 * @Date 2023/01/12/上午 9:45
 */
public class FixLazySingletonSecondMethod {

    /**
     * 前面说过懒加载第一次修复的出现的问题，这里在if加了一个类锁，这样保证instance如果被实例化了就不需要在new Instance() 直接返回
     * 优点： 某种程度上保证了线程不安全的问题
     * 缺点： 无法保证new Instance对象的代码顺序性  线程还是不安全。
     */

    private static FixLazySingletonFirstMethod fixLazySingletonFirstMethod = null;

    private FixLazySingletonSecondMethod() {
    }

    public static synchronized FixLazySingletonFirstMethod getInstance(){
        if (fixLazySingletonFirstMethod == null){
            synchronized (FixLazySingletonFirstMethod.class){
                if (fixLazySingletonFirstMethod == null){
                    fixLazySingletonFirstMethod = new FixLazySingletonFirstMethod();
                }
            }
        }
        return fixLazySingletonFirstMethod;
    }


}
